package com.ctsi.system.service;

import com.alicp.jetcache.anno.Cached;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ctsi.common.util.Search;
import com.ctsi.core.common.constant.SystemConstant;
import com.ctsi.system.entity.Dict;
import com.ctsi.system.vo.DictResVO;
import com.ctsi.system.vo.DictTreeResVO;

import java.util.List;

/**
 * <p>
 * 字典表 服务类
 * </p>
 *
 * @author wang xiao xiang
 */
public interface IDictService extends IService<Dict> {

	/**
	 * 分页业务方法
	 *
	 * @param search 　搜索参数
	 * @return IPage
	 */
	IPage<Dict> listPage(Search search);

	/**
	 * 获取字典值
	 *
	 * @param code    字典编码
	 * @param dictKey 字典键
	 * @return 字典值
	 */
	@Cached(name = SystemConstant.SYS_DICT_CACHE, expire = 3600)
	String getValue(String code, String dictKey);

	/**
	 * 获取字典列表
	 *
	 * @param code 字典编码
	 * @return 字典列表
	 */
	@Cached(name = SystemConstant.SYS_DICT_CACHE, key = "#code", expire = 3600)
	List<Dict> getList(String code);

	/**
	 * 获取字典子属性列表
	 *
	 * @param code 字典编码
	 * @return 字典列表
	 */
	@Cached(name = SystemConstant.SYS_SUB_DICT_CACHE, key = "#code", expire = 3600)
	List<DictResVO> getDictSubList(String code);

	/**
	 * 字典树
	 *
	 * @return 字典树列表
	 */
	List<DictTreeResVO> tree();

	/**
	 * 删除字典
	 *
	 * @param ids id列表
	 * @return boolean
	 */
	boolean delDict(List<Long> ids);
}
